// 在 game-loop.js 顶部添加导入
import { Game, canvas, ctx } from './game-state.js';
import { spawnEnemy } from './enemy-spawner.js';
import { updateBullets } from './bullet-manager.js';
import { checkBulletCollisions } from './collision-detection.js';
import { updateCamera } from './camera.js';
import { loadImage } from './utils.js';
import { explosionManager, initializeExplosion } from './explosion-manager.js';
import { drawEnemies } from './enemy.js'; // 添加导入 drawEnemies 函数

// 在 Game 初始化时调用爆炸初始化
initializeExplosion();

import { generateTerrain,renderTerrain } from './terrain.js';
import { controlPlayer,drawPlayer } from './player.js';
import { Enemy } from './enemy.js';
export let  lastSpawn = 0;
export function gameLoop() {
    // 更新相机位置
    updateCamera();

    // 清空画布
    ctx.clearRect(0, 0, canvas.width, canvas.height);

    // 绘制世界
    ctx.fillStyle = 'white';
    ctx.fillRect(0, 0, canvas.width, canvas.height);

    // 绘制分数
    ctx.fillStyle = 'black';
    ctx.font = '20px Arial';
    ctx.textAlign = 'center';
    ctx.fillText(`Score: ${Game.player.score}`, canvas.width / 2, 30);

    // 修改后的地形生成调用（原第146行）
    generateTerrain(Game.world, Game.player.x, Game.player.y, canvas);

    //地形绘制
    renderTerrain(Game, canvas, ctx);
    // 控制玩家
    controlPlayer();

    // 生成敌人（添加在控制玩家之后）
  
    spawnEnemy(); // 调用新的敌人生成函数
    

    // 修改玩家绘制位置为屏幕中心
    drawPlayer(ctx);

    // 修改敌人和子弹的绘制坐标计算
    drawEnemies(ctx, Game.camera.x, Game.camera.y);


    // 更新并绘制子弹
    updateBullets(); // 确保子弹更新逻辑被调用

    // 检测子弹与敌人的碰撞
    checkBulletCollisions(explosionManager);

    // 更新并绘制爆炸效果
    explosionManager.update();
    explosionManager.draw();

    // 继续游戏循环
    requestAnimationFrame(gameLoop);
}
